home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
UTILITIE
/
CONVERSI
/
0825C.ZIP
/
DECODE.ARC
/
DECODE.C
next >
Wrap
C/C++ Source or Header
|
1980-01-01
|
6KB
|
238 lines
/* */
/* DECODE - dBASE II Runtime decoder. */
/* */
/* Tom Sivesind */
/* Hennumhagan 14 */
/* 3408 Tranby */
/* Tlf.: 03-851329 */
/* */
/* DeSmet C Development Package */
/* */
#define EOF -1
main(argc,argv)
int argc;
char *argv[];
{
int CurChar, Code;
char *InFile, *OutFile;
char *Buffer[80], *NewFile[80], *Ptr;
int Dotpos = 0;
if (argc < 2) {
printf("\nDECODE - dBASE II RunTime decoder");
printf("\nYou didn't enter a filename for input.");
printf("\nProper entry: DECODE filename.ext <CR>\n\n");
exit(0);
}
if(!(InFile = fopen(argv[1],"r"))) {
printf("\n%s??? No such file on the disk.\n\n",argv[1]);
exit(0);
}
if((CurChar = getc(InFile)) < 0x7F){
printf("\n%s is not a RunTime coded file.\n\n", argv[1]);
exit(0);
}
else
ungetc(CurChar, InFile);
strcpy(NewFile, "");
Ptr = strcpy(Buffer, argv[1]);
while (*Ptr++ != '.') Dotpos++;
strncat(NewFile, argv[1], Dotpos);
strcat(NewFile, ".DCD");
if(!(OutFile = fopen(NewFile, "w"))) {
printf("\nCannot create: %s\n\n", OutFile);
exit(0);
}
printf("\nDECODE RunTime Decoder. Tom Sivesind, 1985.\n");
printf("Input File: %s \n", argv[1]);
printf("Output File: %s \n", NewFile);
Code = 1;
while ((CurChar = getc(InFile)) != EOF) {
if (CurChar > 0x7F){
CurChar &= 0x7F;
CurChar = 0x7F - CurChar;
}
if (Code == 1){
switch(CurChar){
case 't': fputs("? ", OutFile);
break;
case 'p': fputs("@ ", OutFile);
break;
case 'o': fputs("ACCEPT ", OutFile);
break;
case 'n': fputs("APPEND ", OutFile);
break;
case 'm': fputs("BROWSE ", OutFile);
break;
case 'l': fputs("CALL ", OutFile);
break;
case 'k': fputs("CANCEL ", OutFile);
break;
case 'z': fputs("CASE ", OutFile);
break;
case 'j': fputs("CHANGE ", OutFile);
break;
case 'i': fputs("CLEAR ", OutFile);
break;
case 'c': fputs("CONTINUE ", OutFile);
break;
case 'h': fputs("COPY ", OutFile);
break;
case 'g': fputs("COUNT ", OutFile);
break;
case 'f': fputs("CREATE ", OutFile);
break;
case 'e': fputs("DELETE ", OutFile);
break;
case 'd': fputs("DISPLAY ", OutFile);
break;
case '|': fputs("DO ", OutFile);
break;
case 'v': fputs("DO CASE ", OutFile);
break;
case 'w': fputs("DO WHILE ", OutFile);
break;
case 'b': fputs("EDIT ", OutFile);
break;
case 'a': fputs("EJECT ", OutFile);
break;
case '~': fputs("ELSE ", OutFile);
break;
case 'x': fputs("ENDCASE ", OutFile);
break;
case '{': fputs("ENDDO ", OutFile);
break;
case '}': fputs("ENDIF ", OutFile);
break;
case '`': fputs("ERASE ", OutFile);
break;
case 0x5E: fputs("FIND ", OutFile);
break;
case '_': fputs("GO ", OutFile);
break;
case ']': fputs("HELP ", OutFile);
break;
case 0x7F: fputs("IF ", OutFile);
break;
case '\\': fputs("INDEX ", OutFile);
break;
case '[': fputs("INPUT ", OutFile);
break;
case 'Z': fputs("INSERT ", OutFile);
break;
case 'Y': fputs("JOIN ", OutFile);
break;
case 'X': fputs("LIST ", OutFile);
break;
case 'W': fputs("LOAD ", OutFile);
break;
case 'V': fputs("LOCATE ", OutFile);
break;
case 'U': fputs("LOOP ", OutFile);
break;
case 'T': fputs("MODIFY ", OutFile);
break;
case 'y': fputs("OTHERWISE ", OutFile);
break;
case 'S': fputs("PACK ", OutFile);
break;
case 'R': fputs("POKE ", OutFile);
break;
case 'Q': fputs("QUIT ", OutFile);
break;
case 'P': fputs("READ ", OutFile);
break;
case 'O': fputs("RECALL ", OutFile);
break;
case 'N': fputs("REINDEX ", OutFile);
break;
case 's': fputs("RELEASE ", OutFile);
break;
case 'M': fputs("REMARK ", OutFile);
break;
case 'L': fputs("RENAME ", OutFile);
break;
case 'K': fputs("REPLACE ", OutFile);
break;
case 'J': fputs("REPORT ", OutFile);
break;
case 'I': fputs("RESET ", OutFile);
break;
case 'H': fputs("RESTORE ", OutFile);
break;
case 'r': fputs("RETURN ", OutFile);
break;
case 'G': fputs("SAVE ", OutFile);
break;
case 'q': fputs("SELECT ", OutFile);
break;
case 'F': fputs("SET ", OutFile);
break;
case 'E': if((CurChar = getc(InFile)) == 'N'){
fputs("E", OutFile);
ungetc(CurChar, InFile);
break;
}
fputs("SKIP ", OutFile);
break;
case 'D': fputs("SORT ", OutFile);
break;
case 'u': fputs("STORE ", OutFile);
break;
case 'C': fputs("SUM ", OutFile);
break;
case 'B': fputs("TEXT ", OutFile);
break;
case 'A': fputs("TOTAL ", OutFile);
break;
case '@': fputs("UNLOCK ", OutFile);
break;
case '?': fputs("UPDATE ", OutFile);
break;
case '>': fputs("USE ", OutFile);
break;
case '=': fputs("WAIT ", OutFile);
break;
default: if (CurChar != 0x1A){
fputs("*** UNKNOWN CODE: <", OutFile);
putc(CurChar, OutFile);
fputs("> ", OutFile);
}
break;
}
}
else
putc(CurChar, OutFile);
if (CurChar == '\n')
Code = 1;
else
Code = 0;
}
fclose(InFile);
fclose(OutFile);
printf("Successful decode.");
}
/* End Of DECODE */